const fs = require('fs');
const path = require('path')
const ReadStream = require('./readStream')

// const rs = fs.createReadStream(path.resolve(__dirname, 'read.md'), { //  fs 继承了 Stream上的createReadStream方法
const rs = new ReadStream(path.resolve(__dirname, 'read.md'), {
    flags: 'r',//  r 供fs.open使用
    start: 0, // 读取开始位置
    end: 5,
    highWaterMark: 3, // 单次读取大小
    encoding: null, // 默认读出为buffer类型
    autoClose: true, // 是否触发 close事件 
})

rs.on('open', function (fd) { // 打开文件时触发
    console.log('open', fd)
})

rs.on('close', function () { // 关闭文件时出发
    console.log('close',)
})

let arr = []
rs.on('data', function (data) { // 每次读取入buffer时触发  data为此次读取的数据
    console.log('data', data)
    arr.push(data)
    rs.pause()//暂停执行
})

setInterval(() => {
    rs.resume()// 结束暂停 继续读取文件写入buffer
}, 1000)

rs.on('end', function () { // 关闭文件时出发
    console.log('end', Buffer.concat(arr).toString())
})


rs.on('error', function (e) { // 错误时出发
    console.log('error', e)
})


/**
 * 
 * 1 
 * 
 * 
 */